package com.css.fxfzysx.modules.vabStructure.repository.impl;

import com.css.fxfzysx.common.utils.BeanUtil;
import com.css.fxfzysx.modules.cztDataMange.entity.RcpInformationEntity;
import com.css.fxfzysx.modules.vabStructure.entity.CztConcreteDestroyCalc;
import com.css.fxfzysx.modules.vabStructure.entity.CztConcreteDestroyParams;
import com.css.fxfzysx.modules.vabStructure.repository.RcpInformationRepository;
import com.css.fxfzysx.modules.vabStructure.vo.ColumnParamVO;
import com.css.fxfzysx.modules.vabStructure.vo.ColumnVO;
import lombok.extern.log4j.Log4j;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Repository
public class RcpInformationRepositoryImpl implements RcpInformationRepository {

    @Resource
    private JdbcTemplate jdbcTemplate;

    @Override
    public void saveConcreteDestroyParams(CztConcreteDestroyParams cztConcreteDestroyParams) {
        jdbcTemplate.update("insert into czt_concrete_destroy_params  (ccdp_id,pillar_code,truss_spacing,span,floor_num,pillar_height,pillar_section_width,pillar_section_height,fyk,v_sectional_area,h0,fck,bk,total_span,distance,beam_heigth,board_thickness,concrete_code,fvk,spacing,sectional_area,ash,beam_section_width,beam_section_height,nu,nl,mz1,mz2,m5nh1,m5nh2,mu,ml,qcz1,qcz2,yield_power,qz,wall_h_sectional_area,pillar_calc_height,is_tcq,nu1,nl1,en,standard_fvk,qmy,nu2,nl2,wall_sectional_area,h_sectional_area,jkb,qwy1,qwy2,lcsjczl,create_user,create_time,del_flag,project_id ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
                cztConcreteDestroyParams.getCcdpId(), cztConcreteDestroyParams.getPillarCode(), cztConcreteDestroyParams.getTrussSpacing(), cztConcreteDestroyParams.getSpan(), cztConcreteDestroyParams.getFloorNum(), cztConcreteDestroyParams.getPillarHeight(), cztConcreteDestroyParams.getPillarSectionWidth(), cztConcreteDestroyParams.getPillarSectionHeight(), cztConcreteDestroyParams.getFyk(), cztConcreteDestroyParams.getVSectionalArea(), cztConcreteDestroyParams.getH0(), cztConcreteDestroyParams.getFck(), cztConcreteDestroyParams.getBk(), cztConcreteDestroyParams.getTotalSpan(), cztConcreteDestroyParams.getDistance(), cztConcreteDestroyParams.getBeamHeigth(), cztConcreteDestroyParams.getBoardThickness(), cztConcreteDestroyParams.getConcreteCode(), cztConcreteDestroyParams.getFvk(), cztConcreteDestroyParams.getSpacing(), cztConcreteDestroyParams.getSectionalArea(), cztConcreteDestroyParams.getAsh(), cztConcreteDestroyParams.getBeamSectionWidth(), cztConcreteDestroyParams.getBeamSectionHeight(), cztConcreteDestroyParams.getNu(), cztConcreteDestroyParams.getNl(), cztConcreteDestroyParams.getMz1(), cztConcreteDestroyParams.getMz2(), cztConcreteDestroyParams.getM5nh1(), cztConcreteDestroyParams.getM5nh2(), cztConcreteDestroyParams.getMu(), cztConcreteDestroyParams.getMl(), cztConcreteDestroyParams.getQcz1(), cztConcreteDestroyParams.getQcz2(), cztConcreteDestroyParams.getYieldPower(), cztConcreteDestroyParams.getQz(), cztConcreteDestroyParams.getWallHSectionalArea(), cztConcreteDestroyParams.getPillarCalcHeight(), cztConcreteDestroyParams.getIsTcq(), cztConcreteDestroyParams.getNu1(), cztConcreteDestroyParams.getNl1(), cztConcreteDestroyParams.getEn(), cztConcreteDestroyParams.getStandardFvk(), cztConcreteDestroyParams.getQmy(), cztConcreteDestroyParams.getNu2(), cztConcreteDestroyParams.getNl2(), cztConcreteDestroyParams.getWallSectionalArea(), cztConcreteDestroyParams.getHSectionalArea(), cztConcreteDestroyParams.getJkb(), cztConcreteDestroyParams.getQwy1(), cztConcreteDestroyParams.getQwy2(), cztConcreteDestroyParams.getLcsjczl(), cztConcreteDestroyParams.getCreateUser(), cztConcreteDestroyParams.getCreateTime(), cztConcreteDestroyParams.getDelFlag(), cztConcreteDestroyParams.getProjectId());
    }

    @Override
    public void saveConcreteDestroyCalcs(CztConcreteDestroyCalc cztConcreteDestroyCalc) {
        jdbcTemplate.update("insert into czt_concrete_destroy_calc  (ccdc_id,floor_num,floor_height,hhz,t1,gi,qek,on,qmi,floor_bear_capacity,qi,u6,u7,u8,u9,u10,create_user,create_time,del_flag,project_id ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? )",
                cztConcreteDestroyCalc.getCcdcId(), cztConcreteDestroyCalc.getFloorNum(), cztConcreteDestroyCalc.getFloorHeight(), cztConcreteDestroyCalc.getHhz(), cztConcreteDestroyCalc.getT1(), cztConcreteDestroyCalc.getGi(), cztConcreteDestroyCalc.getQek(), cztConcreteDestroyCalc.getOn(), cztConcreteDestroyCalc.getQmi(), cztConcreteDestroyCalc.getFloorBearCapacity(), cztConcreteDestroyCalc.getQi(), cztConcreteDestroyCalc.getU6(), cztConcreteDestroyCalc.getU7(), cztConcreteDestroyCalc.getU8(), cztConcreteDestroyCalc.getU9(), cztConcreteDestroyCalc.getU10(), cztConcreteDestroyCalc.getCreateUser(), cztConcreteDestroyCalc.getCreateTime(), cztConcreteDestroyCalc.getDelFlag(), cztConcreteDestroyCalc.getProjectId());
    }

    @Override
    public List<ColumnVO> findByEntiretyId(String entiretyId) {
        String sql = "select * from czt_concrete_param_info where entirety_id = '" + entiretyId + "'";
        List<ColumnVO> rcpInformationEntities = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ColumnVO.class));
        return rcpInformationEntities;
    }

    @Override
    public void moveBasicLibraryById(String dataId, String operate) {
        String sql = "update czt_crs_calentirety_result set basic_library= ? where cal_id = ?";
        jdbcTemplate.update(sql, operate, dataId);
    }
}
